1 module geany_d_binding.geany.keybindings; 2 3 import geany_d_binding.geany.types; 4 import gdk.Gdk: GdkModifierType, GDestroyNotify; 5 import gtk.Widget: GtkWidget; 6 7 extern(System) nothrow: 8 9 /** Keybinding group IDs for use with keybindings_send_command(). */ 10 /* These IDs are used to lookup a group. */ 11 enum GeanyKeyGroupID 12 { 13 GEANY_KEY_GROUP_FILE, /**< Group. */ 14 GEANY_KEY_GROUP_PROJECT, /**< Group. */ 15 GEANY_KEY_GROUP_EDITOR, /**< Group. */ 16 GEANY_KEY_GROUP_CLIPBOARD, /**< Group. */ 17 GEANY_KEY_GROUP_SELECT, /**< Group. */ 18 GEANY_KEY_GROUP_FORMAT, /**< Group. */ 19 GEANY_KEY_GROUP_INSERT, /**< Group. */ 20 GEANY_KEY_GROUP_SETTINGS, /**< Group. */ 21 GEANY_KEY_GROUP_SEARCH, /**< Group. */ 22 GEANY_KEY_GROUP_GOTO, /**< Group. */ 23 GEANY_KEY_GROUP_VIEW, /**< Group. */ 24 GEANY_KEY_GROUP_FOCUS, /**< Group. */ 25 GEANY_KEY_GROUP_NOTEBOOK, /**< Group. */ 26 GEANY_KEY_GROUP_DOCUMENT, /**< Group. */ 27 GEANY_KEY_GROUP_BUILD, /**< Group. */ 28 GEANY_KEY_GROUP_TOOLS, /**< Group. */ 29 GEANY_KEY_GROUP_HELP, /**< Group. */ 30 GEANY_KEY_GROUP_COUNT /* must not be used by plugins */ 31 } 32 33 /** Keybinding command IDs for use with keybindings_send_command(). */ 34 /* These IDs are used to lookup a keybinding. */ 35 enum GeanyKeyBindingID 36 { 37 GEANY_KEYS_EDITOR_TRANSPOSELINE, /**< Keybinding. */ 38 GEANY_KEYS_DOCUMENT_REMOVE_ERROR_INDICATORS, /**< Keybinding. */ 39 GEANY_KEYS_FOCUS_SEARCHBAR, /**< Keybinding. */ 40 GEANY_KEYS_SEARCH_FIND, /**< Keybinding. */ 41 GEANY_KEYS_FILE_SAVEALL, /**< Keybinding. */ 42 GEANY_KEYS_GOTO_NEXTMARKER, /**< Keybinding. */ 43 GEANY_KEYS_NOTEBOOK_SWITCHTABLEFT, /**< Keybinding. */ 44 GEANY_KEYS_VIEW_ZOOMOUT, /**< Keybinding. */ 45 GEANY_KEYS_GOTO_LINE, /**< Keybinding. */ 46 GEANY_KEYS_DOCUMENT_TOGGLEFOLD, /**< Keybinding. */ 47 GEANY_KEYS_BUILD_COMPILE, /**< Keybinding. */ 48 GEANY_KEYS_EDITOR_SCROLLTOLINE, /**< Keybinding. */ 49 GEANY_KEYS_DOCUMENT_UNFOLDALL, /**< Keybinding. */ 50 GEANY_KEYS_GOTO_MATCHINGBRACE, /**< Keybinding. */ 51 GEANY_KEYS_SEARCH_FINDDOCUMENTUSAGE, /**< Keybinding. */ 52 GEANY_KEYS_CLIPBOARD_PASTE, /**< Keybinding. */ 53 GEANY_KEYS_BUILD_MAKE, /**< Keybinding. */ 54 GEANY_KEYS_INSERT_ALTWHITESPACE, /**< Keybinding. */ 55 GEANY_KEYS_EDITOR_SCROLLLINEDOWN, /**< Keybinding. */ 56 GEANY_KEYS_VIEW_TOGGLEALL, /**< Keybinding. */ 57 GEANY_KEYS_VIEW_FULLSCREEN, /**< Keybinding. */ 58 GEANY_KEYS_GOTO_LINEEND, /**< Keybinding. */ 59 GEANY_KEYS_EDITOR_CALLTIP, /**< Keybinding. */ 60 GEANY_KEYS_FILE_PRINT, /**< Keybinding. */ 61 GEANY_KEYS_EDITOR_DUPLICATELINE, /**< Keybinding. */ 62 GEANY_KEYS_FOCUS_SCRIBBLE, /**< Keybinding. */ 63 GEANY_KEYS_TOOLS_OPENCOLORCHOOSER, /**< Keybinding. */ 64 GEANY_KEYS_SEARCH_PREVIOUSMESSAGE, /**< Keybinding. */ 65 GEANY_KEYS_FILE_CLOSE, /**< Keybinding. */ 66 GEANY_KEYS_DOCUMENT_REPLACETABS, /**< Keybinding. */ 67 GEANY_KEYS_FILE_RELOAD, /**< Keybinding. */ 68 GEANY_KEYS_SEARCH_FINDNEXTSEL, /**< Keybinding. */ 69 GEANY_KEYS_FOCUS_MESSAGES, /**< Keybinding. */ 70 GEANY_KEYS_BUILD_RUN, /**< Keybinding. */ 71 GEANY_KEYS_HELP_HELP, /**< Keybinding. */ 72 GEANY_KEYS_SETTINGS_PLUGINPREFERENCES, /**< Keybinding. */ 73 GEANY_KEYS_VIEW_ZOOMRESET, /**< Keybinding. */ 74 GEANY_KEYS_SELECT_WORD, /**< Keybinding. */ 75 GEANY_KEYS_FORMAT_INCREASEINDENT, /**< Keybinding. */ 76 GEANY_KEYS_SETTINGS_PREFERENCES, /**< Keybinding. */ 77 GEANY_KEYS_FORMAT_SENDTOCMD3, /**< Keybinding. */ 78 GEANY_KEYS_DOCUMENT_FOLDALL, /**< Keybinding. */ 79 GEANY_KEYS_FORMAT_SENDTOVTE, /**< Keybinding. */ 80 GEANY_KEYS_PROJECT_PROPERTIES, /**< Keybinding. */ 81 GEANY_KEYS_DOCUMENT_LINEWRAP, /**< Keybinding. */ 82 GEANY_KEYS_EDITOR_MACROLIST, /**< Keybinding. 83 * @deprecated 1.25, it doesn't do anything anymore */ 84 GEANY_KEYS_EDITOR_SUPPRESSSNIPPETCOMPLETION, /**< Keybinding. */ 85 GEANY_KEYS_FOCUS_SIDEBAR_SYMBOL_LIST, /**< Keybinding. */ 86 GEANY_KEYS_GOTO_LINESTART, /**< Keybinding. */ 87 GEANY_KEYS_SEARCH_FINDUSAGE, /**< Keybinding. */ 88 GEANY_KEYS_FILE_NEW, /**< Keybinding. */ 89 GEANY_KEYS_EDITOR_SNIPPETNEXTCURSOR, /**< Keybinding. */ 90 GEANY_KEYS_NOTEBOOK_SWITCHTABRIGHT, /**< Keybinding. */ 91 GEANY_KEYS_FILE_SAVE, /**< Keybinding. */ 92 GEANY_KEYS_FORMAT_INCREASEINDENTBYSPACE, /**< Keybinding. */ 93 GEANY_KEYS_SEARCH_FINDNEXT, /**< Keybinding. */ 94 GEANY_KEYS_GOTO_TOGGLEMARKER, /**< Keybinding. */ 95 GEANY_KEYS_GOTO_TAGDEFINITION, /**< Keybinding. */ 96 GEANY_KEYS_SEARCH_NEXTMESSAGE, /**< Keybinding. */ 97 GEANY_KEYS_EDITOR_DELETELINETOEND, /**< Keybinding. */ 98 GEANY_KEYS_FORMAT_AUTOINDENT, /**< Keybinding. */ 99 GEANY_KEYS_FILE_OPENSELECTED, /**< Keybinding. */ 100 GEANY_KEYS_GOTO_BACK, /**< Keybinding. */ 101 GEANY_KEYS_INSERT_DATE, /**< Keybinding. */ 102 GEANY_KEYS_BUILD_PREVIOUSERROR, /**< Keybinding. */ 103 GEANY_KEYS_GOTO_LINEENDVISUAL, /**< Keybinding. */ 104 GEANY_KEYS_DOCUMENT_REPLACESPACES, /**< Keybinding. */ 105 GEANY_KEYS_FOCUS_EDITOR, /**< Keybinding. */ 106 GEANY_KEYS_SELECT_WORDPARTRIGHT, /**< Keybinding. */ 107 GEANY_KEYS_VIEW_MESSAGEWINDOW, /**< Keybinding. */ 108 GEANY_KEYS_FOCUS_SIDEBAR_DOCUMENT_LIST, /**< Keybinding. */ 109 GEANY_KEYS_FORMAT_REFLOWPARAGRAPH, /**< Keybinding. */ 110 GEANY_KEYS_EDITOR_MOVELINEUP, /**< Keybinding. */ 111 GEANY_KEYS_NOTEBOOK_MOVETABLEFT, /**< Keybinding. */ 112 GEANY_KEYS_SELECT_LINE, /**< Keybinding. */ 113 GEANY_KEYS_EDITOR_UNDO, /**< Keybinding. */ 114 GEANY_KEYS_EDITOR_MOVELINEDOWN, /**< Keybinding. */ 115 GEANY_KEYS_CLIPBOARD_COPYLINE, /**< Keybinding. */ 116 GEANY_KEYS_BUILD_MAKEOWNTARGET, /**< Keybinding. */ 117 GEANY_KEYS_FORMAT_SENDTOCMD2, /**< Keybinding. */ 118 GEANY_KEYS_SEARCH_MARKALL, /**< Keybinding. */ 119 GEANY_KEYS_BUILD_LINK, /**< Keybinding. */ 120 GEANY_KEYS_FILE_CLOSEALL, /**< Keybinding. */ 121 GEANY_KEYS_GOTO_FORWARD, /**< Keybinding. */ 122 GEANY_KEYS_CLIPBOARD_CUT, /**< Keybinding. */ 123 GEANY_KEYS_NOTEBOOK_SWITCHTABLASTUSED, /**< Keybinding. */ 124 GEANY_KEYS_NOTEBOOK_MOVETABRIGHT, /**< Keybinding. */ 125 GEANY_KEYS_BUILD_OPTIONS, /**< Keybinding. */ 126 GEANY_KEYS_GOTO_TAGDECLARATION, /**< Keybinding. */ 127 GEANY_KEYS_FILE_OPEN, /**< Keybinding. */ 128 GEANY_KEYS_EDITOR_COMPLETESNIPPET, /**< Keybinding. */ 129 GEANY_KEYS_FORMAT_UNCOMMENTLINE, /**< Keybinding. */ 130 GEANY_KEYS_FOCUS_VTE, /**< Keybinding. */ 131 GEANY_KEYS_FORMAT_SENDTOCMD1, /**< Keybinding. */ 132 GEANY_KEYS_SELECT_WORDPARTLEFT, /**< Keybinding. */ 133 GEANY_KEYS_VIEW_ZOOMIN, /**< Keybinding. */ 134 GEANY_KEYS_DOCUMENT_LINEBREAK, /**< Keybinding. */ 135 GEANY_KEYS_EDITOR_REDO, /**< Keybinding. */ 136 GEANY_KEYS_EDITOR_CONTEXTACTION, /**< Keybinding. */ 137 GEANY_KEYS_SEARCH_FINDPREVSEL, /**< Keybinding. */ 138 GEANY_KEYS_FORMAT_DECREASEINDENTBYSPACE, /**< Keybinding. */ 139 GEANY_KEYS_FORMAT_COMMENTLINETOGGLE, /**< Keybinding. */ 140 GEANY_KEYS_SELECT_ALL, /**< Keybinding. */ 141 GEANY_KEYS_DOCUMENT_RELOADTAGLIST, /**< Keybinding. */ 142 GEANY_KEYS_BUILD_NEXTERROR, /**< Keybinding. */ 143 GEANY_KEYS_NOTEBOOK_MOVETABLAST, /**< Keybinding. */ 144 GEANY_KEYS_SELECT_PARAGRAPH, /**< Keybinding. */ 145 GEANY_KEYS_EDITOR_DELETELINE, /**< Keybinding. */ 146 GEANY_KEYS_CLIPBOARD_COPY, /**< Keybinding. */ 147 GEANY_KEYS_VIEW_SIDEBAR, /**< Keybinding. */ 148 GEANY_KEYS_FILE_SAVEAS, /**< Keybinding. */ 149 GEANY_KEYS_FORMAT_COMMENTLINE, /**< Keybinding. */ 150 GEANY_KEYS_GOTO_PREVWORDPART, /**< Keybinding. */ 151 GEANY_KEYS_SEARCH_FINDPREVIOUS, /**< Keybinding. */ 152 GEANY_KEYS_SEARCH_REPLACE, /**< Keybinding. */ 153 GEANY_KEYS_EDITOR_WORDPARTCOMPLETION, /**< Keybinding. */ 154 GEANY_KEYS_EDITOR_AUTOCOMPLETE, /**< Keybinding. */ 155 GEANY_KEYS_FOCUS_SIDEBAR, /**< Keybinding. */ 156 GEANY_KEYS_FOCUS_MESSAGE_WINDOW, /**< Keybinding. */ 157 GEANY_KEYS_NOTEBOOK_MOVETABFIRST, /**< Keybinding. */ 158 GEANY_KEYS_GOTO_PREVIOUSMARKER, /**< Keybinding. */ 159 GEANY_KEYS_EDITOR_SCROLLLINEUP, /**< Keybinding. */ 160 GEANY_KEYS_FOCUS_COMPILER, /**< Keybinding. */ 161 GEANY_KEYS_FORMAT_TOGGLECASE, /**< Keybinding. */ 162 GEANY_KEYS_CLIPBOARD_CUTLINE, /**< Keybinding. */ 163 GEANY_KEYS_DOCUMENT_REMOVE_MARKERS, /**< Keybinding. */ 164 GEANY_KEYS_BUILD_MAKEOBJECT, /**< Keybinding. */ 165 GEANY_KEYS_FORMAT_DECREASEINDENT, /**< Keybinding. */ 166 GEANY_KEYS_FILE_OPENLASTTAB, /**< Keybinding. */ 167 GEANY_KEYS_SEARCH_FINDINFILES, /**< Keybinding. */ 168 GEANY_KEYS_GOTO_NEXTWORDPART, /**< Keybinding. */ 169 GEANY_KEYS_INSERT_LINEAFTER, /**< Keybinding. */ 170 GEANY_KEYS_INSERT_LINEBEFORE, /**< Keybinding. */ 171 GEANY_KEYS_DOCUMENT_REMOVE_MARKERS_INDICATORS, /**< Keybinding. */ 172 GEANY_KEYS_PROJECT_OPEN, /**< Keybinding. */ 173 GEANY_KEYS_PROJECT_NEW, /**< Keybinding. */ 174 GEANY_KEYS_PROJECT_CLOSE, /**< Keybinding. */ 175 GEANY_KEYS_FORMAT_JOINLINES, /**< Keybinding. */ 176 GEANY_KEYS_GOTO_LINESTARTVISUAL, /**< Keybinding. */ 177 GEANY_KEYS_DOCUMENT_CLONE, /**< Keybinding. */ 178 GEANY_KEYS_FILE_QUIT, /**< Keybinding. */ 179 GEANY_KEYS_FILE_PROPERTIES, /**< Keybinding. */ 180 GEANY_KEYS_FORMAT_SENDTOCMD4, /**< Keybinding. */ 181 GEANY_KEYS_FORMAT_SENDTOCMD5, /**< Keybinding. */ 182 GEANY_KEYS_FORMAT_SENDTOCMD6, /**< Keybinding. */ 183 GEANY_KEYS_FORMAT_SENDTOCMD7, /**< Keybinding. */ 184 GEANY_KEYS_FORMAT_SENDTOCMD8, /**< Keybinding. */ 185 GEANY_KEYS_FORMAT_SENDTOCMD9, /**< Keybinding. */ 186 GEANY_KEYS_EDITOR_DELETELINETOBEGINNING, /**< Keybinding. */ 187 GEANY_KEYS_COUNT /* must not be used by plugins */ 188 } 189 190 struct GeanyKeyGroup; 191 192 /** Represents a single keybinding action. 193 * 194 * Use keybindings_set_item() to set. */ 195 struct GeanyKeyBinding 196 { 197 guint key; /**< Key value in lower-case, such as @c GDK_a or 0 */ 198 GdkModifierType mods; /**< Modifier keys, such as @c GDK_CONTROL_MASK or 0 */ 199 gchar *name; /**< Key name for the configuration file, such as @c "menu_new" */ 200 /** Label used in the preferences dialog keybindings tab. 201 * May contain underscores - these won't be displayed. */ 202 gchar *label; 203 /** Function called when the key combination is pressed, or @c NULL to use the group callback 204 * (preferred). @see plugin_set_key_group(). */ 205 GeanyKeyCallback callback; 206 GtkWidget *menu_item; /**< Optional widget to set an accelerator for, or @c NULL */ 207 guint id; 208 guint default_key; 209 GdkModifierType default_mods; 210 GeanyKeyBindingFunc cb_func; 211 gpointer cb_data; 212 GDestroyNotify cb_data_destroy; 213 }; 214 215 /** Function pointer type used for keybinding group callbacks. 216 * 217 * You should return @c TRUE to indicate handling the callback. (Occasionally, if the keybinding 218 * cannot apply in the current situation, it is useful to return @c FALSE to allow a later keybinding 219 * with the same key combination to handle it). */ 220 alias GeanyKeyGroupCallback = gboolean function(guint key_id); 221 222 /** Function pointer type used for keybinding callbacks, with userdata for passing context 223 * 224 * You should return @c TRUE to indicate handling the callback. (Occasionally, if the keybinding 225 * cannot apply in the current situation, it is useful to return @c FALSE to allow a later keybinding 226 * with the same key combination to handle it). 227 * 228 * @since 1.26 (API 226) */ 229 alias GeanyKeyBindingFunc = gboolean function(GeanyKeyBinding* key, guint key_id, gpointer user_data); 230 231 /** Function pointer type used for keybinding callbacks. */ 232 alias GeanyKeyCallback = void function(guint key_id); 233 234 @nogc: 235 236 GeanyKeyBinding* keybindings_get_item(GeanyKeyGroup* group, gsize key_id); 237 238 GeanyKeyBinding* keybindings_set_item( 239 GeanyKeyGroup* group, 240 gsize key_id, 241 GeanyKeyCallback callback, 242 guint key, 243 GdkModifierType mod, 244 const(gchar)* name, 245 const(gchar)* label, 246 GtkWidget* menu_item 247 );